{
  "bundles": [
    {
      "@type": "NXBundle",
      "artifactId": "nuxeo-vision-core",
      "artifactVersion": "1.2.3",
      "bundleGroup": {
        "@type": "NXBundleGroup",
        "bundleIds": [
          "nuxeo-vision-aws",
          "nuxeo-vision-core",
          "nuxeo-vision-google",
          "org.nuxeo.dmk-adaptor",
          "org.nuxeo.ecm.platform.lang.ext"
        ],
        "hierarchyPath": "/grp:org.nuxeo",
        "id": "grp:org.nuxeo",
        "name": "org.nuxeo",
        "parentIds": [],
        "readmes": [],
        "version": "9.10"
      },
      "bundleId": "nuxeo-vision-core",
      "components": [
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.operation.OperationServiceComponent--operations",
              "hierarchyPath": "/grp:org.nuxeo/nuxeo-vision-core/org.nuxeo.vision.core.operation/Contributions/org.nuxeo.vision.core.operation--operations",
              "id": "org.nuxeo.vision.core.operation--operations",
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.operation.OperationServiceComponent",
                "name": "org.nuxeo.ecm.core.operation.OperationServiceComponent",
                "type": "service"
              },
              "version": "1.2.3",
              "xml": "<extension point=\"operations\" target=\"org.nuxeo.ecm.core.operation.OperationServiceComponent\">\n    <operation class=\"org.nuxeo.vision.core.operation.VisionOp\"/>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo/nuxeo-vision-core/org.nuxeo.vision.core.operation",
          "name": "org.nuxeo.vision.core.operation",
          "requirements": [],
          "services": [],
          "version": "1.2.3",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.vision.core.operation\" version=\"1.0\">\n  <extension point=\"operations\" target=\"org.nuxeo.ecm.core.operation.OperationServiceComponent\">\n    <operation class=\"org.nuxeo.vision.core.operation.VisionOp\" />\n  </extension>\n</component>\n",
          "xmlFileName": "/OSGI-INF/operation-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.automation.scripting.internals.AutomationScriptingComponent--operation",
              "hierarchyPath": "/grp:org.nuxeo/nuxeo-vision-core/org.nuxeo.vision.core.chains/Contributions/org.nuxeo.vision.core.chains--operation",
              "id": "org.nuxeo.vision.core.chains--operation",
              "targetComponentName": {
                "rawName": "service:org.nuxeo.automation.scripting.internals.AutomationScriptingComponent",
                "name": "org.nuxeo.automation.scripting.internals.AutomationScriptingComponent",
                "type": "service"
              },
              "version": "1.2.3",
              "xml": "<extension point=\"operation\" target=\"org.nuxeo.automation.scripting.internals.AutomationScriptingComponent\">\n    <scriptedOperation id=\"javascript.PictureVisionDefaultMapper\">\n      <inputType>Document</inputType>\n      <outputType>Document</outputType>\n      <category>javascript</category>\n      <description/>\n      <script><![CDATA[function run(input, params) {\n\n              var blob = Picture.GetView(input, {'viewName': 'Medium'});\n\n              blob = VisionOp(blob, {\n                'features': ['LABEL_DETECTION'],\n                'maxResults': 5,\n                'outputVariable': 'annotations'\n              });\n\n              var annotations = ctx.annotations;\n\n              if (annotations===undefined || annotations.length===0) return;\n\n              var textAndLabels = annotations[0];\n\n              // build tag list\n              var labels = textAndLabels.getClassificationLabels();\n\n              if (labels !== undefined && labels !== null && labels.length>0) {\n                  var tags = [];\n                  for(var i=0;i<labels.length;i++) {\n                    var label = labels[i];\n                    var tag = label.getText();\n                    if (tag ===undefined || tag ===null) continue;\n                    tags.push(tag.replace(/[^A-Z0-9]+/ig,'+'));\n                  }\n\n                  input = Services.TagDocument(input, {'tags': tags });\n              }\n\n              return input;\n\n        }]]></script>\n    </scriptedOperation>\n\n    <scriptedOperation id=\"javascript.VideoVisionDefaultMapper\">\n      <inputType>Document</inputType>\n      <outputType>Document</outputType>\n      <category>javascript</category>\n      <description/>\n      <script><![CDATA[function run(input, params) {\n              var storyboard = input['vid:storyboard'];\n              var blobs = [];\n              var index;\n              var tags = [];\n\n              for (index=0;index<storyboard.length;index++) {\n\n                var blob = storyboard[index].content;\n\n                VisionOp(blob, {\n                  'features': ['LABEL_DETECTION'],\n                  'maxResults': 5,\n                  'outputVariable': 'annotations'\n                });\n\n                var annotations = ctx.annotations;\n\n                if (annotations===undefined || annotations.length===0) return;\n\n                // build tag list\n                var textAndLabels = annotations[0];\n                var labels = textAndLabels.getClassificationLabels();\n\n                if (labels === undefined || labels === null || labels===0) continue;\n\n                for(var j=0;j<labels.length;j++) {\n                    var label = labels[j];\n                    var tag = label.getText();\n                    if (tag ===undefined || tag ===null) continue;\n                    tags.push(tag.replace(/[^A-Z0-9]+/ig,'+'));\n                    tags.push(label.getText().replace(/\\s/g,'+'));\n                }\n              }\n\n              input = Services.TagDocument(input, {'tags': tags });\n\n              return input;\n\n            }]]></script>\n    </scriptedOperation>\n\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo/nuxeo-vision-core/org.nuxeo.vision.core.chains",
          "name": "org.nuxeo.vision.core.chains",
          "requirements": [],
          "services": [],
          "version": "1.2.3",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.vision.core.chains\">\n  <extension target=\"org.nuxeo.automation.scripting.internals.AutomationScriptingComponent\" point=\"operation\">\n    <scriptedOperation id=\"javascript.PictureVisionDefaultMapper\">\n      <inputType>Document</inputType>\n      <outputType>Document</outputType>\n      <category>javascript</category>\n      <description></description>\n      <script><![CDATA[function run(input, params) {\n\n              var blob = Picture.GetView(input, {'viewName': 'Medium'});\n\n              blob = VisionOp(blob, {\n                'features': ['LABEL_DETECTION'],\n                'maxResults': 5,\n                'outputVariable': 'annotations'\n              });\n\n              var annotations = ctx.annotations;\n\n              if (annotations===undefined || annotations.length===0) return;\n\n              var textAndLabels = annotations[0];\n\n              // build tag list\n              var labels = textAndLabels.getClassificationLabels();\n\n              if (labels !== undefined && labels !== null && labels.length>0) {\n                  var tags = [];\n                  for(var i=0;i<labels.length;i++) {\n                    var label = labels[i];\n                    var tag = label.getText();\n                    if (tag ===undefined || tag ===null) continue;\n                    tags.push(tag.replace(/[^A-Z0-9]+/ig,'+'));\n                  }\n\n                  input = Services.TagDocument(input, {'tags': tags });\n              }\n\n              return input;\n\n        }]]></script>\n    </scriptedOperation>\n\n    <scriptedOperation id=\"javascript.VideoVisionDefaultMapper\">\n      <inputType>Document</inputType>\n      <outputType>Document</outputType>\n      <category>javascript</category>\n      <description></description>\n      <script><![CDATA[function run(input, params) {\n              var storyboard = input['vid:storyboard'];\n              var blobs = [];\n              var index;\n              var tags = [];\n\n              for (index=0;index<storyboard.length;index++) {\n\n                var blob = storyboard[index].content;\n\n                VisionOp(blob, {\n                  'features': ['LABEL_DETECTION'],\n                  'maxResults': 5,\n                  'outputVariable': 'annotations'\n                });\n\n                var annotations = ctx.annotations;\n\n                if (annotations===undefined || annotations.length===0) return;\n\n                // build tag list\n                var textAndLabels = annotations[0];\n                var labels = textAndLabels.getClassificationLabels();\n\n                if (labels === undefined || labels === null || labels===0) continue;\n\n                for(var j=0;j<labels.length;j++) {\n                    var label = labels[j];\n                    var tag = label.getText();\n                    if (tag ===undefined || tag ===null) continue;\n                    tags.push(tag.replace(/[^A-Z0-9]+/ig,'+'));\n                    tags.push(label.getText().replace(/\\s/g,'+'));\n                }\n              }\n\n              input = Services.TagDocument(input, {'tags': tags });\n\n              return input;\n\n            }]]></script>\n    </scriptedOperation>\n\n  </extension>\n</component>\n",
          "xmlFileName": "/OSGI-INF/default-chain-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "documentationHtml": "",
          "extensionPoints": [],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.ecm.core.event.EventServiceComponent--listener",
              "hierarchyPath": "/grp:org.nuxeo/nuxeo-vision-core/org.nuxeo.vision.core.listener/Contributions/org.nuxeo.vision.core.listener--listener",
              "id": "org.nuxeo.vision.core.listener--listener",
              "targetComponentName": {
                "rawName": "service:org.nuxeo.ecm.core.event.EventServiceComponent",
                "name": "org.nuxeo.ecm.core.event.EventServiceComponent",
                "type": "service"
              },
              "version": "1.2.3",
              "xml": "<extension point=\"listener\" target=\"org.nuxeo.ecm.core.event.EventServiceComponent\">\n\n    <listener async=\"true\" class=\"org.nuxeo.vision.core.listener.PictureConversionChangedListener\" name=\"visionPictureConversionChangedListener\" postCommit=\"true\" priority=\"20\">\n      <event>pictureViewsGenerationDone</event>\n    </listener>\n\n    <listener async=\"false\" class=\"org.nuxeo.vision.core.listener.VideoStoryboardChangedListener\" name=\"visionVideoChangedListener\" postCommit=\"false\" priority=\"20\">\n      <event>beforeDocumentModification</event>\n    </listener>\n\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo/nuxeo-vision-core/org.nuxeo.vision.core.listener",
          "name": "org.nuxeo.vision.core.listener",
          "requirements": [],
          "services": [],
          "version": "1.2.3",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.vision.core.listener\">\n  <extension target=\"org.nuxeo.ecm.core.event.EventServiceComponent\" point=\"listener\">\n\n    <listener name=\"visionPictureConversionChangedListener\" async=\"true\" postCommit=\"true\"\n      class=\"org.nuxeo.vision.core.listener.PictureConversionChangedListener\" priority=\"20\">\n      <event>pictureViewsGenerationDone</event>\n    </listener>\n\n    <listener name=\"visionVideoChangedListener\" async=\"false\" postCommit=\"false\"\n      class=\"org.nuxeo.vision.core.listener.VideoStoryboardChangedListener\" priority=\"20\">\n      <event>beforeDocumentModification</event>\n    </listener>\n\n  </extension>\n</component>",
          "xmlFileName": "/OSGI-INF/listener-contrib.xml",
          "xmlPureComponent": true
        },
        {
          "@type": "NXComponent",
          "componentClass": "org.nuxeo.vision.core.service.VisionImpl",
          "documentation": "\n    A service that performs Computer Vision tasks like classification, OCR, Face Detection ...\n  \n",
          "documentationHtml": "<p>\nA service that performs Computer Vision tasks like classification, OCR, Face Detection ...\n</p><p></p>",
          "extensionPoints": [
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.vision.core.service",
              "descriptors": [
                "org.nuxeo.vision.core.service.VisionProviderDescriptor"
              ],
              "documentation": "Used to define a new vision service provider\n",
              "documentationHtml": "<p>\nUsed to define a new vision service provider</p>",
              "hierarchyPath": "/grp:org.nuxeo/nuxeo-vision-core/org.nuxeo.vision.core.service/ExtensionPoints/org.nuxeo.vision.core.service--provider",
              "id": "org.nuxeo.vision.core.service--provider",
              "label": "provider (org.nuxeo.vision.core.service)",
              "name": "provider",
              "version": "1.2.3"
            },
            {
              "@type": "NXExtensionPoint",
              "componentId": "org.nuxeo.vision.core.service",
              "descriptors": [
                "org.nuxeo.vision.core.service.VisionDescriptor"
              ],
              "documentation": "Used to the default behavior of the service\n",
              "documentationHtml": "<p>\nUsed to the default behavior of the service</p>",
              "hierarchyPath": "/grp:org.nuxeo/nuxeo-vision-core/org.nuxeo.vision.core.service/ExtensionPoints/org.nuxeo.vision.core.service--configuration",
              "id": "org.nuxeo.vision.core.service--configuration",
              "label": "configuration (org.nuxeo.vision.core.service)",
              "name": "configuration",
              "version": "1.2.3"
            }
          ],
          "extensions": [
            {
              "@type": "NXContribution",
              "documentationHtml": "",
              "extensionPoint": "org.nuxeo.vision.core.service--configuration",
              "hierarchyPath": "/grp:org.nuxeo/nuxeo-vision-core/org.nuxeo.vision.core.service/Contributions/org.nuxeo.vision.core.service--configuration",
              "id": "org.nuxeo.vision.core.service--configuration",
              "targetComponentName": {
                "rawName": "service:org.nuxeo.vision.core.service",
                "name": "org.nuxeo.vision.core.service",
                "type": "service"
              },
              "version": "1.2.3",
              "xml": "<extension point=\"configuration\" target=\"org.nuxeo.vision.core.service\">\n    <configuration>\n      <pictureMapperChainName>javascript.PictureVisionDefaultMapper</pictureMapperChainName>\n      <videoMapperChainName>javascript.VideoVisionDefaultMapper</videoMapperChainName>\n      <defaultProviderName>google</defaultProviderName>\n    </configuration>\n  </extension>"
            }
          ],
          "hierarchyPath": "/grp:org.nuxeo/nuxeo-vision-core/org.nuxeo.vision.core.service",
          "name": "org.nuxeo.vision.core.service",
          "requirements": [],
          "services": [
            {
              "@type": "NXService",
              "componentId": "org.nuxeo.vision.core.service",
              "hierarchyPath": "/grp:org.nuxeo/nuxeo-vision-core/org.nuxeo.vision.core.service/Services/org.nuxeo.vision.core.service.Vision",
              "id": "org.nuxeo.vision.core.service.Vision",
              "overriden": false,
              "version": "1.2.3"
            }
          ],
          "version": "1.2.3",
          "xmlFileContent": "<?xml version=\"1.0\"?>\n<component name=\"org.nuxeo.vision.core.service\" version=\"1.0\">\n\n  <documentation>\n    A service that performs Computer Vision tasks like classification, OCR, Face Detection ...\n  </documentation>\n\n  <implementation class=\"org.nuxeo.vision.core.service.VisionImpl\" />\n\n  <service>\n    <provide interface=\"org.nuxeo.vision.core.service.Vision\" />\n  </service>\n\n  <extension-point name=\"configuration\">\n    <documentation>Used to the default behavior of the service</documentation>\n    <object class=\"org.nuxeo.vision.core.service.VisionDescriptor\" />\n  </extension-point>\n\n  <extension-point name=\"provider\">\n    <documentation>Used to define a new vision service provider</documentation>\n    <object class=\"org.nuxeo.vision.core.service.VisionProviderDescriptor\" />\n  </extension-point>\n\n  <extension target=\"org.nuxeo.vision.core.service\" point=\"configuration\">\n    <configuration>\n      <pictureMapperChainName>javascript.PictureVisionDefaultMapper</pictureMapperChainName>\n      <videoMapperChainName>javascript.VideoVisionDefaultMapper</videoMapperChainName>\n      <defaultProviderName>${org.nuxeo.vision.default.provider:=}</defaultProviderName>\n    </configuration>\n  </extension>\n\n</component>\n",
          "xmlFileName": "/OSGI-INF/computer-vision-service.xml",
          "xmlPureComponent": false
        }
      ],
      "fileName": "nuxeo-vision-core-1.2.3.jar",
      "groupId": "org.nuxeo",
      "hierarchyPath": "/grp:org.nuxeo/nuxeo-vision-core",
      "id": "nuxeo-vision-core",
      "location": "",
      "manifest": "Manifest-Version: 1.0\r\nArchiver-Version: Plexus Archiver\r\nCreated-By: Apache Maven\r\nBuilt-By: jenkins\r\nBuild-Jdk: 1.8.0_77\r\nBundle-ManifestVersion: 2\r\nBundle-Version: 1.0.0\r\nBundle-ActivationPolicy: lazy\r\nBundle-ClassPath: .\r\nBundle-Vendor: Nuxeo\r\nBundle-Name: nuxeo-vision-core\r\nBundle-SymbolicName: nuxeo-vision-core;singleton=true\r\nNuxeo-Component: OSGI-INF/computer-vision-service.xml,OSGI-INF/listene\r\n r-contrib.xml,OSGI-INF/operation-contrib.xml,OSGI-INF/default-chain-c\r\n ontrib.xml\r\n\r\n",
      "packages": [],
      "requirements": [],
      "version": "1.2.3"
    }
  ],
  "creationDate": 1664793304638,
  "key": "Nuxeo Platform LTS 2017-9.10",
  "name": "Nuxeo Platform LTS 2017",
  "operations": [
    {
      "@type": "NXOperation",
      "aliases": [],
      "category": "Files",
      "contributingComponent": "org.nuxeo.vision.core.operation",
      "description": "Call the Computer Vision Service for the input blob(s)",
      "hierarchyPath": "/op:VisionOp",
      "label": "Call the Computer Vision Service",
      "name": "VisionOp",
      "operationClass": "org.nuxeo.vision.core.operation.VisionOp",
      "params": [
        {
          "description": null,
          "isRequired": true,
          "name": "features",
          "order": 0,
          "type": "stringlist",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": true,
          "name": "maxResults",
          "order": 0,
          "type": "int",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": true,
          "name": "outputVariable",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        },
        {
          "description": null,
          "isRequired": false,
          "name": "provider",
          "order": 0,
          "type": "string",
          "values": [],
          "widget": null
        }
      ],
      "signature": [
        "bloblist",
        "bloblist",
        "blob",
        "blob"
      ],
      "url": "VisionOp",
      "version": "9.10"
    }
  ],
  "packages": [],
  "pluginSnapshots": {},
  "releaseDate": 1515474000000,
  "version": "9.10"
}